//axios 插件
import axios from 'axios'
//可选是否插入

//store插件
import store from '@/store'

//router插件
import router from '@/router'

//是否允许跨域时携带cookie信息[不允许]
axios.defaults.withCredentials=false

//设置token认证接口时，配置axios的默认表头配置[默认打开页面时是没有token]
let token=''
axios.defaults.headers.common['Authorization']=token

//axios实例中配置默认访问服务器接口
let url='http://127.0.0.1:8093';//如果项目打包时，此处为空
let instance=axios.create({
	baseURL:url
})
//请求拦截器:在发送post/get之前，判断是否在本地中存储了token，如果有添加到headers内，后台会自己判断token是否过期
instance.interceptors.request.use( config=>{
	//拦截成功的操作
	//获取本地的token
	let token=localStorage.getItem('token')
	//判断是否存在token
	// if(token){
		config.headers.Authorization="bearer"+token
	// }
	//返回配置
	return config
},error=>{
	//拦截失败的操作
	return Promise.reject(error)
} )
//响应拦截器:用于拦截后台的报错处理
instance.interceptors.response.use(response=>{
	//响应成功
	return response
},err=>{
	//响应失败
	if(err.response){
		switch(err.response.status){
			case 401:
				console.log('账号或密码错误');
				//登录失败，清除之前的token
				localStorage.setItem('token','')
				this.$router.push('/login')
				break;
			case 403:
				console.log('非法闯入，禁止访问');
				break;
			default:
				console.log('请求错误');
				break
		}
	}
	//返回接口的信息提示
	return Promise.reject(err.response.data)
})
//导出axios实例
export default instance


// //get请求封装 url参数 get：请求的地址 data参数：请求时拼接到地址栏的参数

// export let $get=(url,params)=>{
// 	return instance.get(url,{
// 		params:params
// 	})
// }

// //post请求封装三种类型

// //1.post请求并提交json函数
// //url请求地址 data提交的数据
// exprot let $postJson=(url,data)=>{
// 	return instance.post(url,data,{
// 		headers:{'Content-Type':'application/json'}
// 	})
// }

// //2.post请求并上传文件
// //url请求地址 formdata 含有文件上传框的表单数据对象
// exprot let $postUpload=(url,formdata)=>{
// 	return instance.post(url,formdata,{
// 		headers:{'Content-Type':'multipart/form-data'}
// 	})
// }

// //3.post将提交的数据当作请求地址的参数进行提交（开头导入qs插件——import qs from 'qs'）
// //url请求地址 data提交的数据
// exprot let $post=(url,data)=>{
// 	//将data的数据进行qs格式转换
// 	let qsdata=qs.stringify(data)
	
// 	return instance.post(url,qsdata,{
// 		headers:{'Content-Type':'application/x-www-form-urlencoded'}
// 	})
// }